使用长按操纵器可以使用户在 Kanzi 应用程序中长按节点。这样可以让应用程序在用户于节点上按下指针并按住您的长按操纵器中设定的时长时做出响应。例如,使用长按操纵器打开上下文菜单。请参阅为节点启用长按手势。
使用 长按 (Long Press) 触发器响应长按手势。例如,您可以更改用户按下节点时的节点外观。请参阅使用长按 (Long Press) 触发器。
长按操纵器是一种输入操纵器,您可以用于在 Kanzi 应用程序中添加手势识别到节点上。您可以通过 Kanzi Engine API 分配输入操纵器。请参阅使用输入操纵器。
通过完成教程学习如何使用长按操纵器。请参阅教程:平移、缩放、轻敲。
本节介绍了如何为任意节点启用长按手势。要为按钮 (Button) 节点启用长按,请参阅使用按钮 (Button) 触发器。
要为节点启用长按手势:



# 符号后跟别名名称访问别名目标节点。


LongPressManipulator::LongPressMessage 消息定义处理程序。private:
//为 LongPressManipulator::LongPressMessage 消息定义处理程序,该消息来自
//具有可生成长按消息的输入操纵器的节点。
void onLongPress(LongPressManipulator::LongPressMessageArguments& messageArguments)
{
//添加处理长按事件的代码。
}onProjectLoaded() 函数中创建 LongPressManipulator 操纵器并订阅其消息。
virtual void onProjectLoaded() KZ_OVERRIDE
{
ScreenSharedPtr screen = getScreen();
Domain* domain = getDomain();
//使用别名获取LongPressNode 节点。
NodeSharedPtr longPressNode = screen->lookupNode<Node>("#LongPressNode");
//创建生成长按消息的输入操纵器。
LongPressManipulatorSharedPtr longPressManipulator = LongPressManipulator::create(domain);
//添加输入操纵器到LongPressNode 节点。
longPressNode->addInputManipulator(longPressManipulator);
//将长按持续时间设为 250 ms。默认持续时间为 500 ms。
//长按操纵器会在用户按下节点持续
//此时间量时识别该手势。
longPressManipulator->setPressDuration(chrono::milliseconds(250));
//订阅 LongPressNode 节点的 LongPressManipulator::LongPressMessage 消息。
// LongPressManipulator 操纵器在用户按下该节点
//获取您使用 LongPressManipulator::setPressDuration 函数设置的毫秒数时生成此消息。
longPressNode->addMessageHandler(LongPressManipulator::LongPressMessage, bind(&MyProject::onLongPress, this, placeholders::_1));
}LongPressMessage 消息定义的行为。使用 长按 (Long Press) 触发器响应长按手势。例如,您可以更改用户按下节点时的节点外观。
要使用长按 (Long Press) 触发器:



有关详细信息,请参阅 API reference中的 LongPressManipulator 类。